/*
 * This class has all the constants needed plus the control signals.
 */

public class Constants {

	// Add the ALU operation names here
	public enum ALUOp {
		ADD, SUB, AND, OR, NOR, SLL, SRL,
	}

	public enum ImplementedOperation {
		// //////// R-Type /////////////
		ADD, SUB, SLL, SRL, NOR, AND, OR, SLT, SLTU,
		// //////// I-Type /////////////
		ADDI, LW, SW, SLTUI, SLTI, ANDI, ORI, BEQ, BNE,
		// //////// J-Type /////////////
		J, JAL, JR,
		// //////// No Operation ///////
		NOOP,
	}

	// Register names
	public enum Registers {
		$zero, $at, $v0, $v1, $a0, $a1, $a2, $a3, $t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $s0, $s1, $s2, $s3, $s4, $s5, $s6, $s7, $t8, $t9, $k0, $k1, $gp, $sp, $fp, $ra, NOCONTENT
	}

	
	
	
	// Control signals
	public static boolean RegDst = false;
	public static boolean Jump = false;
	public static boolean Branch = false;
	public static boolean Branch2 = false;
	public static boolean MemRead = false;
	public static boolean MemtoReg = false;
	public static boolean MemWrite = false;
	public static boolean ALUSrc = false;
	public static boolean RegWrite = false;
	public static boolean JAL = false;
	public static boolean JR = false;
	public static ALUOp ALUOperation = ALUOp.ADD;

	public Constants() {
		// Static class
	}

}
